package com.shenzhenai.it_hei_ma.a03threadcase3;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * @author huangzehui
 * @date 2025/8/26 13:50 周二
 * @description 多线程&JUC-05-多线程的第三种实现方式
 * https://www.bilibili.com/video/BV1LG4y1T7n2?spm_id_from=333.788.player.switch&vd_source=e07cc8cc94eb22bd76722071b03cd199&p=5
 */
public class ThreadDemo {

    public static void main(String[] args) {
        // 创建MyCallable的对象(表示多线程要执行的任务)
        MyCallable mc = new MyCallable();

        // 创建FutureTask的对象(作用管理多线程运行的结果)
        FutureTask<Integer> ft = new FutureTask<>(mc);

        // 创建线程对象
        Thread t1 = new Thread(ft);
        t1.setName("线程1");

        // 启动线程
        t1.start();

        // 获取多线程运行的结果
        try {
            Integer result = ft.get();
            System.out.println(result);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
}
